์ž‘์„ฑ: 2026-03-06 06:35:13์ˆ˜์ •: 2026-03-06 06:35:13

Nginx Proxy Manager(NPM) ์„ค์น˜ ๋ฐ Cloudflare ๋ฌด๋ฃŒ SSL ์„ค์ • ๊ฐ€์ด๋“œ

ํ™ˆ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•  ๋•Œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋น„์Šค๋ฅผ ๋„๋ฉ”์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด **์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ(Reverse Proxy)**๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ฐ€์žฅ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด **Nginx Proxy Manager(NPM)**๋ฅผ Docker Compose๋กœ ์„ค์น˜ํ•˜๊ณ , Cloudflare DNS Challenge๋ฅผ ํ†ตํ•ด 80๋ฒˆ ํฌํŠธ ๊ฐœ๋ฐฉ ์—†์ด ๋ฌด๋ฃŒ ์™€์ผ๋“œ์นด๋“œ SSL ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.


1. Nginx Proxy Manager(NPM)๋ž€?

  • GUI ๊ธฐ๋ฐ˜: ๋ณต์žกํ•œ Nginx ์„ค์ • ํŒŒ์ผ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ชจ๋“  ์„ค์ •์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋™ SSL ๋ฐœ๊ธ‰: Let's Encrypt๋ฅผ ํ†ตํ•ด ํด๋ฆญ ๋ช‡ ๋ฒˆ์œผ๋กœ SSL(HTTPS)์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํฌ์›Œ๋”ฉ ๊ด€๋ฆฌ: ๋„๋ฉ”์ธ๋ณ„๋กœ ๋‚ด๋ถ€ IP์™€ ํฌํŠธ๋ฅผ ๋งคํ•‘ํ•ด์ค๋‹ˆ๋‹ค.

2. Docker Compose๋กœ NPM ์„ค์น˜ํ•˜๊ธฐ

LXC ์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” VM์— Docker๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2.1 docker-compose.yml ์ž‘์„ฑ

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'   # HTTP
      - '81:81'   # ๊ด€๋ฆฌ์ž UI
      - '443:443' # HTTPS
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

2.2 ์‹คํ–‰ ๋ฐ ๋กœ๊ทธ์ธ

docker compose up -d
  • ์ ‘์† ์ฃผ์†Œ: http://[์„œ๋ฒ„-IP]:81
  • ๊ธฐ๋ณธ ๊ณ„์ •: [email protected] / changeme (๋กœ๊ทธ์ธ ํ›„ ์ฆ‰์‹œ ๋ณ€๊ฒฝ ๊ถŒ์žฅ)

3. Cloudflare DNS๋ฅผ ์ด์šฉํ•œ ๋ฌด๋ฃŒ SSL ์„ค์ • (DNS Challenge)

์ผ๋ฐ˜์ ์ธ HTTP-01 ๋ฐฉ์‹์€ 80๋ฒˆ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ์–ด์•ผ ์ธ์ฆ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, DNS Challenge ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํฌํŠธ๋ฅผ ์—ด์ง€ ์•Š๊ณ ๋„ **์™€์ผ๋“œ์นด๋“œ ์ธ์ฆ์„œ(*.domain.com)**๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3.1 Cloudflare API ํ† ํฐ ์ƒ์„ฑ

  1. Cloudflare ๋Œ€์‹œ๋ณด๋“œ โ†’ ๋‚ด ํ”„๋กœํ•„ โ†’ API ํ† ํฐ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ† ํฐ ์ƒ์„ฑ โ†’ Zone DNS ํŽธ์ง‘ ํ…œํ”Œ๋ฆฟ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์‚ฌ์šฉ ๊ถŒํ•œ: Zone - DNS - Edit, Zone - Zone - Read๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ์˜์—ญ ๋ฆฌ์†Œ์Šค: ๋ชจ๋“  ์˜์—ญ ๋˜๋Š” ํŠน์ • ๋„๋ฉ”์ธ์„ ์„ ํƒํ•˜๊ณ  ํ† ํฐ์„ ์ƒ์„ฑํ•œ ๋’ค ๋ฉ”๋ชจํ•ด ๋‘ก๋‹ˆ๋‹ค.

3.2 NPM์—์„œ SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰

  1. NPM ๊ด€๋ฆฌ ํŽ˜์ด์ง€์—์„œ SSL Certificates โ†’ Add SSL Certificate โ†’ Let's Encrypt๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. Domain Names: *.yourdomain.com, yourdomain.com์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. Use a DNS Challenge๋ฅผ ํ™œ์„ฑํ™”(ON) ํ•ฉ๋‹ˆ๋‹ค.
  4. DNS Provider: Cloudflare๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  5. Credentials File Content: ์•„๊นŒ ์ƒ์„ฑํ•œ API ํ† ํฐ์„ dns_cloudflare_api_token = ๋’ท๋ถ€๋ถ„์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.
  6. I Agree... ์ฒดํฌ ํ›„ Save๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋! (์•ฝ 1~2๋ถ„ ์†Œ์š”)

4. ํ”„๋ก์‹œ ํ˜ธ์ŠคํŠธ(Proxy Host) ์„ค์ •

์ด์ œ ์‹ค์ œ ์„œ๋น„์Šค์— ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•ด ๋ด…์‹œ๋‹ค.

  1. Hosts โ†’ Proxy Hosts โ†’ Add Proxy Host ํด๋ฆญ.
  2. Domain Names: vscode.yourdomain.com (์˜ˆ์‹œ)
  3. Forward Hostname/IP: ์—ฐ๊ฒฐํ•  ์„œ๋น„์Šค์˜ ๋‚ด๋ถ€ IP.
  4. Forward Port: ํ•ด๋‹น ์„œ๋น„์Šค์˜ ํฌํŠธ.
  5. SSL ํƒญ์—์„œ ๋ฐฉ๊ธˆ ์ƒ์„ฑํ•œ Cloudflare ์™€์ผ๋“œ์นด๋“œ ์ธ์ฆ์„œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  6. Force SSL, HTTP/2 Support, Websockets Support๋ฅผ ๋ชจ๋‘ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

5. ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ)

Q. 80๋ฒˆ ํฌํŠธ๋ฅผ ๊ผญ ๋‹ซ์•„๋„ ๋˜๋‚˜์š”? A. DNS Challenge ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ์‹œ์—๋Š” 80๋ฒˆ ํฌํŠธ๊ฐ€ ํ•„์š” ์—†์ง€๋งŒ, ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ HTTP๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ HTTPS๋กœ ๊ฐ•์ œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ(Force SSL)ํ•˜๋ ค๋ฉด 80๋ฒˆ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ์ด ๊ทน๋„๋กœ ์ค‘์š”ํ•˜๋‹ค๋ฉด 80๋ฒˆ์„ ๋‹ซ๊ณ  HTTPS(443)๋กœ๋งŒ ์ ‘์†ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q. API ํ† ํฐ ๊ถŒํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค. A. Cloudflare์—์„œ ํ† ํฐ์„ ๋งŒ๋“ค ๋•Œ DNS Edit ๊ถŒํ•œ๊ณผ Zone Read ๊ถŒํ•œ์ด ๋ชจ๋‘ ์žˆ๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•˜์„ธ์š”.


๊ด€๋ จ ๊ฒ€์ƒ‰์–ด: nginx proxy manager docker, cloudflare ssl ์„ค์ •, ๋ฌด๋ฃŒ ์™€์ผ๋“œ์นด๋“œ ์ธ์ฆ์„œ, npm letsencrypt cloudflare, ํ™ˆ์„œ๋ฒ„ ์™ธ๋ถ€ ์ ‘์†